package com.annotation.demo1;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * @ClassName AnnotationProcessor
 * @Description 注解处理器
 * @Author Kx
 * @Date 2025/3/28 11:40
 * @Version 1.0
 */
public class AnnotationProcessor {
    /***
     * @author: kx
     * @date: 2025/3/28 11:41
     * @param obj : 待验证的类
     * @description: 验证注解
    */
    public static void validate(Object obj) throws IllegalAccessException {
        // 获取类的class对象
        Class<?> clazz = obj.getClass();
        // 获取类的所有字段名
        for (Field field : clazz.getDeclaredFields()){
            // 判断字段上是否有MyAnnotation注解
            if (field.isAnnotationPresent(MyAnnotation.class)){
                // 获取字段上的MyAnnotation注解实例
                MyAnnotation annotation = field.getAnnotation(MyAnnotation.class);

                // 设置可访问性
                field.setAccessible(true);

                // 判断字段类型
                if(field.getType() == int.class){
                    // 获取字段值
                    int value = (int) field.get(obj);

                    // 判断字段值是否小于注解中的值
                    if (value < annotation.age()){
                        throw new IllegalArgumentException("年龄不合法");
                    }
                }
            }
        }
    }
}
